﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;

namespace Business
{
    public static class DateHandler
    {
        static DateTimeFormatInfo dateTimeFormatInfo = DateTimeFormatInfo.CurrentInfo;
        static Calendar calendar = DateTimeFormatInfo.CurrentInfo.Calendar;

        public static int GetWeekForDate(DateTime date)
        {
            // Om aktuell dag är måndag, tisdag eller onsdag så sätts dagen 3 dagar framåt. Detta gör att
            // måndag / tisdag / onsdag alltid får samma vecka som torsdag / fredag / lördag.
            DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(date);
            if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
            {
                date = date.AddDays(3);
            }

            // Returnera veckan för aktuellt datum
            return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

        }

        // Returnerar antalet dagar i angiven månad
        public static int GetDaysInContainingMonth(DateTime date)
        {
            return calendar.GetDaysInMonth(date.Year, date.Month);
        }

        public static DateTime CheckStringForDate(string dateStringToCheck)
        {
            DateTime dateToReturn;
            if (string.IsNullOrEmpty(dateStringToCheck))
            {
                dateToReturn = DateTime.Today;
            }
            else
            {
                dateToReturn = DateTime.Parse(dateStringToCheck);
            }

            return dateToReturn;
        }
    }
}
